//
//  NSDate+Extension.swift
//  日期处理
//
//  Created by mac on 15/5/25.
//  Copyright (c) 2015年 mac. All rights reserved.
//

import Foundation

extension NSDate {
    
    ///Step: <构建方法返回转换好的字符串>
    class func dateFromStatusModel(fullDateSting: String) -> NSDate?
    {
        ///Step: <2>
        let dat = NSDateFormatter()
        dat.locale = NSLocale(localeIdentifier: "en")
        dat.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        ///Step: <3>
        let date = dat.dateFromString(fullDateSting)
        
        return date
    }
    
//    刚刚(一分钟内)
//    X分钟前(一小时内)
//    X小时前(当天)
//    昨天 HH:mm(昨天)
//    MM-dd HH:mm(当年)
//    yyyy-MM-dd HH:mm(更早期)
    
   /// 上面方法返回的时间(NSDATE)类型，想要返回成字符串返回到控制器并且显示到label上 写一个对象方法
    func fullDescription() -> String
    {
        //时间格式
        var dateFormaterString: String?
        
        //获取当前时间
        let calendar = NSCalendar.currentCalendar()
        //判断是否是今天
        if calendar.isDateInToday(self)
        {

            let datefromnow = Int(NSDate().timeIntervalSinceDate(self))
            if datefromnow<60
            {
                return "刚刚"
            }
            else if datefromnow<3600
            {
               return "\(datefromnow/60)分钟前"
            }
            else
            {
                return "\(datefromnow/3600)小时之前"
            }

        }
        
         if calendar.isDateInYesterday(self)
          {
             dateFormaterString = "昨天 HH:mm"
            
          }
        else
         {
            //计算当前系统时间和传进来的时间差别
            //返回年数差别 当前 - 传入的
            let coms = calendar.components(NSCalendarUnit.CalendarUnitYear, fromDate: NSDate(), toDate: self, options: NSCalendarOptions(0))
            if coms.year == 0
            {
                dateFormaterString = "MM-dd HH:mm"
            }
            else 
            {
                dateFormaterString = "yyyy-MM-dd HH:mm"
       
            }
          }
        let dat = NSDateFormatter()
        dat.locale = NSLocale(localeIdentifier: "en")
        dat.dateFormat = dateFormaterString
        return dat.stringFromDate(self)
    }
    
    
    
    
    
    
    
    
}